/**
 * 分页封装类
 */
package com.eight.pageInfo;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Component;;

/**
 * <p>Company: B505信息技术研究所 </p> 
 * @Description: 分页封装类
 * @Create Date: 2017年11月26日上午11:32:18
 * @Version: V1.00 
 * @Author: yulin
 */
@Component
public class PageableTools {
	
	/**
     * 获取基础分页对象
     * @param page 获取第几页
     * @param size 每页条数
     * @param dtos 排序对象数组
     * @return
     */
	
	public Pageable basicPage(Integer page, Integer size, SortDto... dtos) {
        SortTools sortTools = new SortTools();
		Sort sort = sortTools.basicSort(dtos);
        page = (page==null || page<0)?0:page;
        size = (size==null || size<=0)?10:size;
		Pageable pageable = PageRequest.of(page, size, sort);
        return pageable;
    }

    /**
     * 获取基础分页对象，每页条数默认10条
     *  - 
     * @param page 获取第几页
     * @return
     */
    public  Pageable basicPage(Integer page) {
        return basicPage(page, 0, new SortDto("asc", "id"));
    }
    
    public Pageable basicPageDesc(Integer page) {
        return basicPage(page, 0, new SortDto("desc", "id"));
    }

    /**
     * 获取基础分页对象，每页条数默认15条
     * @param page 获取第几页
     * @param dtos 排序对象数组
     * @return
     */
    public Pageable basicPage(Integer page, SortDto... dtos) {
        return basicPage(page, 0, dtos);
    }

    /**
     * 获取基础分页对象，排序方式默认升序
     * @param page 获取第几页
     * @param size 每页条数
     * @param orderField 排序字段
     * @return
     */
    public Pageable basicPage(Integer page, Integer size, String orderField) {
        return basicPage(page, size, new SortDto("asc", orderField));
    }

    /**
     * 获取基础分页对象
     *  - 每页条数默认10条
     *  - 排序方式默认升序
     * @param page 获取第几页
     * @param orderField 排序字段
     * @return
     */
    public Pageable basicPage(Integer page, String orderField) {
        return basicPage(page, 0, new SortDto("asc", orderField));
    }

    public Pageable basicPageDesc(Integer page, String orderField) {
        return basicPage(page, 0, new SortDto("desc", orderField));
    }

}
